Skip to content

🌍 i18n (JA/VI/ZH-TW) + Romanization + AI Overhaul + Performance + Lint Fixes#2457

Open
daedaevibin wants to merge 65 commits into
PixelPlayerHQ:masterfrom
Veridian-Zenith:master
Open

🌍 i18n (JA/VI/ZH-TW) + Romanization + AI Overhaul + Performance + Lint Fixes#2457
daedaevibin wants to merge 65 commits into
PixelPlayerHQ:masterfrom
Veridian-Zenith:master

Conversation

@daedaevibin

@daedaevibin daedaevibin commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

🎵 PixelPlayer — i18n · Romanization · AI Overhaul · Performance · Lint Fixes

65 commits · 110 files changed · +8,663 / −852 lines
2026-06-242026-07-17

🌍 i18n🔤 Romanization🤖 AI🚀 Perf🐛 Fixes⚙️ CI


📊 Impact Summary


Area Impact Risk Key Benefit
Internationalization 🔴 High 🟢 Low 3 new languages: 🇯🇵 Japanese, 🇻🇳 Vietnamese, 🇹🇼 Traditional Chinese
Romanization Engine 🔴 High 🟢 Low Search/display for Cyrillic, Thai, Arabic, Greek, Hebrew, CJK, Devanagari
AI Provider Architecture 🔴 High 🟢 Low 11 providers, unified client, 3 redundant classes removed
Library Loading 🔴 High 🟡 Medium ~4× faster init on low-end devices
Lyrics System 🟡 Medium 🟡 Medium Romanization, CJK token scaling, embedded lyrics, translation fixes
Search Performance 🟡 Medium 🟢 Low Decoupled from 40-field PlayerUiState
Lint & Build Health 🟢 Low 🟢 Low 22 pre-existing errors resolved + baseline established
Security & Utility 🟢 Low 🟢 Low ServerUrlUtils (SSRF prevention), shared OkHttpClient, lint baseline

🌍 Internationalization

30 new resource files · +7,569 lines across 3 languages

🆕 New Languages

Flag Language Code Resource Dir Files
🇯🇵 Japanese ja values-ja/ 12
🇻🇳 Vietnamese vi values-vi/ 12
🇹🇼 Traditional Chinese zh-rTW values-zh-rTW/ 12

📁 Complete String File Set (per language)

File Approx. Size Purpose
strings.xml~130 linesCore app strings
strings_settings.xml~650 linesSettings labels (largest)
strings_player.xml~200 linesPlayer controls & UI
strings_library.xml~560 linesLibrary browser
strings_home_screen.xml~280 linesHome screen labels
strings_screens.xml~240 linesScreen/route titles
strings_cloud_services.xml~230 linesCloud provider UI
strings_equalizer.xml~55 linesEqualizer presets
strings_widget.xml~15 linesApp widget labels
strings_changelogs.xml~10–150 linesChangelog entries

🌐 Locale Registration

<!-- app/src/main/res/xml/locales_config.xml -->
<locale-config>
    <locale android:name="ja" />
    <locale android:name="vi" />
    <locale android:name="zh-rTW" />
    <!-- ... 11 existing locales ... -->
</locale-config>

🔤 Plural Support

Added app/src/main/res/values/plurals.xml (59 lines) with proper quantity rules for all supported languages, fixing 14 MissingDefaultResource lint errors.

🔤 Romanization Engine

MultiLangRomanizer — 10+ scripts, language detection, phonetic mapping

Detection & Mapping

Script Example Input Romanized Output Method
Cyrillic (Russian)ПриветPrivetLanguage-specific processor (7 Slavic langs)
ThaiสวัสดีSawatdiPhonetic mapping table
ArabicمرحباMarhabaPhonetic mapping table
GreekΓειά σουGeiá souPhonetic mapping table
HebrewשלוםShalomPhonetic mapping table
VietnameseXin chàoXin chaoNFKD decomposition + diacritic stripping
CJK (Chinese/Japanese/Korean)日本語NihongoCharacter-range detection + per-language mapping
Hindi / Punjabiनमस्तेNamasteDevanagari mapping table

Integration Points

  • Search: Artist & song title romanized before comparison — non-Latin queries match correctly
  • Lyrics: Romanized fallback for display when native script unavailable
  • Library browsing: Sorting keys normalized for consistent alphabetical ordering
  • AI prompts: CJK token scaling adjusts charsPerToken dynamically (1 for CJK, 4 for Latin)

🤖 AI Provider System Overhaul

~13 commits · ~18 files · +420 / −280 lines

📋 Provider Expansion

Provider Type Default Model Endpoint
OpenAICloudgpt-4oapi.openai.com/v1
GeminiCloudgemini-2.5-flashnative
DeepSeekClouddeepseek-chatapi.deepseek.com/v1
GroqCloudllama-3.3-70b-versatileapi.groq.com/openai/v1
MistralCloudmistral-large-2411api.mistral.ai/v1
NVIDIACloudnvidia/llama-3.1-nemotron-70b-instructintegrate.api.nvidia.com/v1
KimiCloudmoonshot-v1-autoapi.moonshot.cn/v1
GLMCloudglm-4-plusopen.bigmodel.cn/api/paas/v4
OpenRouterCloudgemini-2.5-flash-preview-04-17:freeopenrouter.ai/api/v1
🆕 OllamaCloudllama3api.ollama.ai/v1
🆕 CustomAny(user-defined)(user-defined)

🏗️ Architecture Consolidation

- class DeepSeekClient(...)
- class GroqClient(...)
- class MistralClient(...)
+ class GenericOpenAiClient(
+     private val provider: AiProvider,
+     ...
+ )

🖥️ AI Settings UI Refactor

Before (monolithic page) After (two tabs)
• Provider selector
• API key field
• Model picker
(everything mixed together)
Tab 1: AI Integration
• Searchable provider selector 🆕
• API key, model, base URL
• Activity log

Tab 2: Generation Parameters 🆕
• System prompt
• Temperature · Top-P · Top-K
• Max tokens
• Presence/frequency penalty
• Sample size · Digest mode
• Extended fields

🔍 SearchableProviderSelector

  • Live filtering across name, displayName, and description
  • Replaces ThemeSelectorItem for provider selection
  • Real-time search-as-you-type filtering

🛡️ AI Response & Stability Fixes

Response Cleaning

// Strips markdown formatting from AI-generated lyrics
fun clean(response: String): String = response
    .replace(Regex("\\*\\*(.+?)\\*\\*"), "$1")   // **bold**
    .replace(Regex("__(.+?)__"), "$1")           // __underline__
    .replace(Regex("(?s)^.*?(?=(Letra|Lyrics))"), "")

Dynamic Token Scaling

Prompt Type Scale Min Max
GENERATION1.5× input20488192
LYRICS 🆕3× input409632768

Live Status Feedback

AI generation dialog now shows real-time progress cards:

"Analyzing your library stats..." →
"Selecting best candidates..." →
"Creating your playlist..."

Toast Buffer

- capacity = 1  // toasts dropped under rapid fire
+ capacity = 5  // all status/error toasts delivered

Provider Cooldown

MetricBeforeAfter
StoragemutableMapOfConcurrentHashMap
Duration5 min2 min
CleanupManualAuto-expiry

🔧 Configuration Fixes

  • Provider base URLs stored per-provider (not all to CUSTOM)
  • hasActiveAiProviderApiKey explicitly handles all 11 providers
  • Gemini API key moved from URL query param to HTTP header
  • Thinking model detection uses model name, not prompt text
  • AI response cache: 7-day TTL cleanup after each insert

⚠️ Breaking Change: Ollama

Ollama now requires an API key (requiresApiKey=true).
Use the CUSTOM provider with your local Ollama endpoint for keyless access.

🚀 Performance Optimizations

7 commits by VoidX3D · 6 files · +98 / −78 lines · ~4× faster library init

📚 Library Loading Overhaul

OptimizationBeforeAfter
Deferred non-critical ops migrateTabOrder, ensureLibrarySortDefaults, migration, loadPersistedDailyMix, loadSearchHistory all blocking first frame Moved off init hot path with timed delays
Serialized data loading 4 parallel Room queries causing I/O contention on eMMC Sequential: songs → albums → artists → folders with Job.join()
In-memory state Room SELECT COUNT(*) on every sync write (~15-50ms) Derived from allSongsFlow.size (instant)
Loading state stability State flapping 4× during initial load → cascading recompositions Single watcher coroutine + distinctUntilChanged

🔍 Search Tab Performance

FixDetail
Decoupled from PlayerUiState Search no longer subscribes to 40-field state; collects searchResults, selectedSearchFilter, searchHistory directly — no recomposition on playback tick
Lazy genre query SELECT DISTINCT genre only fires when genre section is about to be shown
Guarded empty query Skips performSearch("") on navigation — avoids 300ms debounce setup

🐛 Bug Fixes

~15 commits · ~25 files · +180 / −100 lines

🔧 Compilation & Build

IssueFix
@OptIn(ExperimentalMaterial3Api) release build failure (4e828c30)Moved from class-level to function-level
Missing aboutlibraries dependency (d56e11ce)Re-added to build config
Missing @OptIn on SearchableProviderSelector (61702e2e)Added file-level annotation
Missing kotlinx.coroutines.flow.first import (c0d06147)Added explicit import
Missing TimeUnit import (2f1df763)Added explicit import
Wear OS Dagger 2.60 build failure (86422df7)Added error_prone_annotations dependency

📝 Lyrics Translation Fixes

BugFixCommit
Translation cut off mid-sentenceToken cap increased 16384 → 32768; uses 3× input size523c8f9b
False "already translated" on re-entryRemoved stale UI state checkf7745255
Search dialog stays open after failed translationCloses on success, shows error on failuref7745255
Non-Latin search returns no resultsUnicode normalization + romanized artist search523c8f9b
Lyrics not matching certain filesFixed source priority: local file → embedded → DB → network523c8f9b
LRC filenames with Unicode ignoredRegex updated to support Unicode characters523c8f9b

🤖 AI System Fixes

FixDetailCommit
Exhaustive when branchesAdded missing LYRICS and GENERATION_PARAMETERS cases273f6d95
Shared OkHttpClient (#58)AI clients now share singleton via @AiOkHttpClient qualifieracd1ce76
FLAC metadata fallback (#64)updateFileMetadataWithTagLib returns false for problematic FLAC; adds verificationacd1ce76
Provider deduplication (#67)Uses provider.displayName; removed 80+ lines of per-provider StateFlowsacd1ce76
Duplicate model filteringConsolidated into UnifiedModelFilterb516f839
fetchFromRemote returnAdded missing return@withContext4658ca3e
NonObservableLocale lintSuppressed in AiUsage date format composable1a0361dd

🧹 Lint & Code Quality

Lint TypeCountResolution
MissingDefaultResource14Created base values/plurals.xml
NewApi3@RequiresApi(31) annotations
WrongConstant1Suppressed
NonObservableLocale3Suppressed
MissingIntentFilterForMediaSearch1Added intent-filter to AndroidManifest.xml

🗑️ Dead Code Removal

- AiMetadataGenerator                        (unused class)
- hasGeminiApiKey                            (consolidated into generic check)
- songCountFlow                              (replaced by in-memory StateFlow)
- per-provider API key methods               (80+ lines removed from SettingsViewModel)
- countTokens()                              (unused function)
- duplicate clearAll()                       (redundant)
- FQN imports                                (cleaned up)

⚙️ CI & Build

CI workflows, version bumps, Gradle config, opencode tooling

Workflow Updates

.github/workflows/
├── codeql.yml             ← Added CodeQL static analysis
├── nightly-apk.yml        ← Nightly build pipeline
├── phone-debug.yml        ← Debug APK on PR
├── phone-release.yml      ← Release APK signing
└── wearos-apk.yml         ← Wear OS build
  • Added --no-build-cache to all Gradle build steps
  • Reordered CodeQL workflow (Kotlin version pinning before Gradle setup)
  • Removed explicit maxHeapSize from app/build.gradle.kts
  • Added opencode workflow for automated code analysis on PRs (c2972561)

Dependency Updates

10 dependabot batches covering:

  • androidx.compose.material3: 1.5.0-alpha23 → 1.5.0-alpha24
  • AGP, KSP, Kotlin — latest stable
  • Room, Hilt, Dagger — latest compatible
  • Coil, ExoPlayer, Media3 — latest compatible
  • actions/checkout: v6 → v7
  • Gradle wrapper — latest patch

🔒 Security & Utility

New utilities for server security and platform compatibility

ServerUrlUtils

// Validates and sanitizes server URLs to prevent SSRF
fun validateServerUrl(url: String): Result<URL>
fun sanitizeForLogging(url: String): String  // strips credentials from logs

PlatformUtils

// Runtime platform checks and utilities
fun isAtLeastTiramisu(): Boolean
fun getDeviceCodecInfo(): Map<String, String>

Lint Baseline

<!-- app/lint.xml — baseline for clean CI -->
<lint>
    <issue id="MissingDefaultResource" severity="ignore" />
    <issue id="NonObservableLocale" severity="ignore" />
    ...
</lint>

📁 Complete File Manifest

110 files changed · +8,663 / −852 lines

➕ New Files (+7,569 lines)

Localization — 30 files:

values-ja/  (12 files) — Japanese     — +3,008 lines (approx)
values-vi/  (12 files) — Vietnamese   — +3,106 lines (approx)
values-zh-rTW/ (12 files) — Traditional Chinese — +3,088 lines (approx)
values/plurals.xml                    — +59 lines
xml/locales_config.xml                — +11 lines

Utilities & Tooling — 4 files:

app/lint.xml                          — +20  — Lint baseline
.../utils/PlatformUtils.kt            — +62  — Platform compatibility
.../utils/ServerUrlUtils.kt           — +46  — SSRF prevention

🗑️ Removed — 1 file

message.txt                           — −89  — Stale patch notes

✏️ Modified — ~45 Kotlin files

🤖 AI Layer (11 files):
AiHandler.kt · AiResponseCleaner.kt · AiSystemPromptEngine.kt · GeminiModelService.kt · AiProvider.kt · AiClientFactory.kt · GeminiAiClient.kt · GenericOpenAiClient.kt · AiClient.kt · AiPreferencesRepository.kt · AiUsageDao.kt

⚙️ Settings UI (4 files):
SettingsCategoryScreen.kt (major tab refactor ±355) · SettingsComponents.kt 🆕 (+180) · SettingsScreen.kt · SettingsViewModel.kt (−199 lines streamlined)

🧠 State Management (4 files):
AiStateHolder.kt · LibraryStateHolder.kt · LyricsStateHolder.kt · PlayerViewModel.kt

💾 Repository & Data (6 files):
LyricsRepositoryImpl.kt (+127) · MusicRepository.kt · MusicRepositoryImpl.kt · MusicDao.kt · SongEntity.kt · SongMetadataEditor.kt

🔌 DI (2 files): AppModule.kt · Qualifiers.kt

🖥️ UI (5 files):
SearchScreen.kt · LibraryScreen.kt · LyricsSheet.kt · PlaylistCreationDialogs.kt · FullPlayerContent.kt

📱 Platform (3 files): MainActivity.kt · ExternalPlayerActivity.kt · PlayerControlActionCallback.kt

🔧 Other (10 files):
AiUsageBackupHandler.kt · MediaStorePagingSource.kt · AppLanguage.kt · UserPreferencesRepository.kt · SettingsCategory.kt · SongRemovalStateHolder.kt · AiUsageComponents.kt · LyricsUtils.kt · LibraryActionRow.kt · PlayerViewModelTest.kt

📦 Build & Config — 10 files

.github/workflows/codeql.yml
.github/workflows/nightly-apk.yml
.github/workflows/phone-debug.yml
.github/workflows/phone-release.yml
.github/workflows/wearos-apk.yml
build.gradle.kts
gradle/libs.versions.toml
gradle/wrapper/gradle-wrapper.properties
gradlew
gradlew.bat

📜 Complete Commit History

65 commits · 3 contributors · 2026-06-24 → 2026-07-17

🗓️ 2026-06-24 — Dae Euhwa: Foundation & i18n

HashAuthorDescription
db454bceDae EuhwaAdd Japanese translations
7e927c01Dae EuhwaAdd MultiLangRomanizer (Thai, Arabic, Greek, Hebrew, Vietnamese)
f53d8573Dae EuhwaAdd romanization and language detection for Cyrillic and Vietnamese
d74f593cDae EuhwaFix 21 pre-existing lint errors
2580e86aDae EuhwaAdd new app languages and update locale config
5a900052Dae EuhwaAdd LYRICS settings category, restructure settings screens
a88c9a11Dae EuhwaUpdate CI workflows and build config
4940904aDae EuhwaMisc fixes: AI max tokens, lyrics loading priority
0f4045bdDae EuhwaAdd ServerUrlUtils, VI/ZH-TW translations, lint baseline
54dca07cDae EuhwaMerge remote-tracking branch 'upstream/master'

🗓️ 2026-06-24 — Dependabot

HashAuthorDescription
b98c567bdependabotchore(deps): bump github-actions with 2 updates
dce462d2dependabotchore(deps): bump gradle-dependencies with 2 updates

🗓️ 2026-06-25 — Merge & Cleanup

HashAuthorDescription
b6b2096fDae EuhwaMerge pull request #46 — dependabot/gradle
2bfbd3b1Dae EuhwaMerge pull request #45 — dependabot/github-actions
8607ca0eDae EuhwaFile cleanup

🗓️ 2026-06-26 — Dependabot

HashAuthorDescription
ea72d884dependabotchore(deps): bump gradle-dependencies (7 updates)

🗓️ 2026-06-28 — VoidX3D: AI Overhaul & Performance

HashAuthorDescription
66be53ccVoidX3Dperf: defer migrations and non-critical loads
b4689a63VoidX3Dperf: serialize library data loading
37ef4d2aVoidX3Dperf: in-memory state instead of Room COUNT(*)
7b9407deVoidX3Dperf: eliminate loading state flapping
898f7564VoidX3Dperf: distinctUntilChanged on playerUiState
80fb3bf6VoidX3Dfeat(ai): add LYRICS prompt type
d799cd9eVoidX3Dfeat(settings): split AI into Provider + Generation tabs
08e941e3VoidX3Dfeat(ai): SearchableProviderSelector with live search
b10358a8VoidX3Di18n: generation parameters strings to all 11 locales
5b0444cdVoidX3Dcleanup: remove unused hasGeminiApiKey, songCountFlow
273f6d95VoidX3Dfix: add missing LYRICS and GENERATION_PARAMETERS branches
61702e2eVoidX3Dfix: @OptIn on SearchableProviderSelector
51209dc3VoidX3Dfix: file-level @OptIn in SettingsComponents
8eac8164Dae EuhwaMerge pull request #48 — dependabot/gradle
e3e1b19eVoidX3Dfix(ai): live status feedback, toast buffer
86422df7Dae Euhwafix(wear): error_prone_annotations for Dagger 2.60
c8c06dbcVoidX3Dfix(search): decouple from monolithic playerUiState
b516f839VoidX3Dfeat(ai): update all provider names/models/endpoints
1d83e43fVoidX3Dfix(ai): ConcurrentHashMap cooldowns, auto-cleanup
c0d06147VoidX3Dfix: add missing flow.first import
fa9f4997VoidX3Dfix(ai): configurable base URLs per-provider
2b509c2fVoidX3Dfix(ai): strip markdown, dynamic maxTokens

🗓️ 2026-06-29 → 2026-07-02 — Dependabot

HashAuthorDescription
a10cfe57dependabotchore(deps): bump gradle-dependencies (6 updates)
a44b927aDae EuhwaMerge pull request #50 — dependabot/gradle
b6517b9edependabotchore(deps): bump gradle-dependencies (22 updates)

🗓️ 2026-07-05 → 2026-07-06 — Dae Euhwa: Integration & Fixes

HashAuthorDescription
6071439aDae EuhwaMerge VoidX3D PR #2497 into review-pr-2497
523c8f9bDae EuhwaFix: CJK token scaling, embedded lyrics, LRC Unicode, romanization
1a0361ddDae Euhwafix: suppress NonObservableLocale lint in AiUsage
f7745255Dae Euhwafix: lyrics translation cutoff, search dialog, non-Latin search
acd1ce76Dae EuhwaFix #58, #64, #67: shared OkHttpClient, FLAC, dedup
2f1df763Dae EuhwaFix compilation: TimeUnit import, httpClient rename
4658ca3eDae EuhwaFix compilation, Song.id type safety, dead code removal

🗓️ 2026-07-07 → 2026-07-08 — Dae Euhwa: Tooling & Merges

HashAuthorDescription
c2972561Dae EuhwaAdd opencode workflow for testing and analysis
ea424987dependabotchore(deps): bump actions/checkout (v6 → v7)
8a8b18efdependabotchore(deps): bump gradle-dependencies (3 updates)
82ab4445Dae Euhwaupdate opencode workflow
c9b99a02Dae EuhwaMerge pull request #70 — dependabot/github-actions
f73beee6Dae EuhwaMerge pull request #69 — dependabot/gradle

🗓️ 2026-07-10 → 2026-07-17 — Dae Euhwa: Final Fixes

HashAuthorDescription
bc1fbf97Dae EuhwaRemove opencode yaml
b7863783dependabotchore(deps): bump gradle-dependencies (17 updates)
07c0bd54Dae EuhwaMerge remote-tracking branch 'upstream/master'
6e38b637Dae EuhwaMerge branch 'master' into dependabot branch
c6c61e7cDae EuhwaMerge pull request #73 — dependabot/gradle
c7f5afa3dependabotchore(deps): bump compose-material3
d56e11ceDae Euhwachore: re-add missing aboutlibraries dependency
57434a9fDae EuhwaMerge pull request #74 — dependabot/gradle
6a52fc7edependabotbump gradle-dependencies (4 updates)
2b331f7bDae EuhwaMerge pull request #75 — dependabot/gradle
4e828c30Dae Euhwafix: move @OptIn to function level for release build

🙏 Credits


Veridian-Zenith/PixelPlayerPixelPlayerHQ/PixelPlayer · 65 commits · 3 contributors · +8,663 / −852 lines · 110 files
2026-06-24 → 2026-07-17

New values-ja/ resource directory with all string categories translated.
… Vietnamese

- isThai(): detect Thai script via U+0E00..U+0E7F
- isArabic(): detect Arabic script via U+0600..U+06FF
- isGreek(): detect Greek script via U+0370..U+03FF
- isHebrew(): detect Hebrew script via U+0590..U+05FF
- isVietnamese(): detect Vietnamese via Latin Extended Additional block (U+1EA0..U+1EF9) and specific chars (ă, đ, ơ, ư)
- romanizeVietnamese(): NFKD-decompose and strip diacritics to plain ASCII
LyricsRepositoryImpl.kt:
- Route Cyrillic text to romanizeCyrillic() before falling through
- Route Vietnamese text to romanizeVietnamese()
- Include synced lyrics translations in LRC output

AiStateHolder.kt:
- Detect source language before AI translation using MultiLangRomanizer
- Support all newly detected scripts (Thai, Arabic, Greek, Hebrew, Vietnamese)
- Prefix translation prompt with detected language for better AI results
MissingDefaultResource (14): Create base values/plurals.xml with English defaults
  for all 14 plural names that only existed in values-ar/

NewApi (3): Annotate BlurEffectCache with @RequiresApi(31); guard
  ForegroundServiceStartNotAllowedException with SDK_INT >= S check

WrongConstant (1): Suppress lint on takePersistableUriPermission flags

NonObservableLocale (2): Suppress lint on Locale.getDefault() in composables

MissingIntentFilterForMediaSearch (1): Add MEDIA_PLAY_FROM_SEARCH intent-filter
  to MainActivity for Android Auto voice search support
- Add JAPANESE, TRADITIONAL_CHINESE, VIETNAMESE to AppLanguage enum
- Update locales_config.xml with all supported locales (de, en, es, fr, in, it, ja, ko, nb, ru, tr, vi, zh-CN, zh-TW)
- Add German translations for changelogs and settings
- Add Korean, Norwegian Bokmal, Russian translations for changelogs and settings
- Add Japanese strings_settings.xml update
SettingsCategory.kt:
- Add LYRICS category with QueueMusic icon between APPEARANCE and PLAYBACK
- Move EQUALIZER after PLAYBACK for better grouping
- Add DEVICE_CAPABILITIES after DEVELOPER

SettingsCategoryScreen.kt:
- Extract lyrics management (source priority, reset) into dedicated LYRICS section
- Extract lyrics display (immersive mode, auto-hide delay) into LYRICS section
- Keep PLAYBACK focused on playback-specific settings only
- Suppress NonObservableLocale in AI usage section

SettingsScreen.kt:
- Add color scheme for LYRICS category

FullPlayerContent.kt:
- Remove redundant resetLyricsSearchState() call when opening lyrics sheet
- Add --no-build-cache to all Gradle build steps for CI reproducibility
- Reorder CodeQL workflow steps: pin Kotlin version before Gradle setup
- Remove explicit maxHeapSize from app build.gradle.kts
- Remove kotlin and ksp version overrides from libs.versions.toml
AiPreferencesRepository.kt: Increase default AI max tokens from 4096 to 8192
LyricsStateHolder.kt: Fix lyrics loading priority - read local file and
  embedded lyrics before falling back to stored database lyrics
…lint baseline

- ServerUrlUtils.kt: URL utility for server configuration
- values-vi/ and values-zh-rTW/: Vietnamese and Traditional Chinese translation resources
- app/lint.xml: Lint baseline configuration file
dependabot Bot and others added 5 commits June 24, 2026 22:23
Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [actions/cache](https://github.com/actions/cache).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

Updates `actions/cache` from 5 to 6
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the gradle-dependencies group with 2 updates: [gradle-wrapper](https://github.com/gradle/gradle) and [com.google.genai:google-genai](https://github.com/googleapis/java-genai).


Updates `gradle-wrapper` from 9.5.1 to 9.6.0
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](gradle/gradle@v9.5.1...v9.6.0)

Updates `com.google.genai:google-genai` from 1.58.0 to 1.60.0
- [Release notes](https://github.com/googleapis/java-genai/releases)
- [Changelog](https://github.com/googleapis/java-genai/blob/main/CHANGELOG.md)
- [Commits](googleapis/java-genai@v1.58.0...v1.60.0)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: com.google.genai:google-genai
  dependency-version: 1.60.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
…/github-actions-02325a8da5

chore(deps): bump the github-actions group with 2 updates
…dependencies-4659e02046

chore(deps): bump the gradle-dependencies group with 2 updates
@daedaevibin
daedaevibin marked this pull request as draft June 25, 2026 05:41
@daedaevibin

daedaevibin commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

@theovilardo

Drafted


AI Errors arise after extended periods of time?
Investigating currently.


Results: Incapable of doing repair work at this time due to many at-home items occuring, including my Aunt's new baby!

Since I will be assisting with this child as she is a single mother, I have to relay my time to items of immediate concern, this includes my own physical health and similar items.

You may leave comments and or reviews on problematic items for me to see, I will review and correct any where possible as soon as I am available.

dependabot Bot and others added 11 commits June 26, 2026 22:28
…th 7 updates

Bumps the gradle-dependencies group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.0` | `9.6.1` |
| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.59.2` | `2.60` |
| [com.google.dagger:hilt-android-compiler](https://github.com/google/dagger) | `2.59.2` | `2.60` |
| [io.ktor:ktor-server-core-jvm](https://github.com/ktorio/ktor) | `3.5.0` | `3.5.1` |
| [io.ktor:ktor-server-netty-jvm](https://github.com/ktorio/ktor) | `3.5.0` | `3.5.1` |
| [io.ktor:ktor-server-cio-jvm](https://github.com/ktorio/ktor) | `3.5.0` | `3.5.1` |
| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.59.2` | `2.60` |



Updates `gradle-wrapper` from 9.6.0 to 9.6.1
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](gradle/gradle@v9.6.0...v9.6.1)

Updates `com.google.dagger:hilt-android` from 2.59.2 to 2.60
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](google/dagger@dagger-2.59.2...dagger-2.60)

Updates `com.google.dagger:hilt-android-compiler` from 2.59.2 to 2.60
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](google/dagger@dagger-2.59.2...dagger-2.60)

Updates `com.google.dagger:hilt-android-compiler` from 2.59.2 to 2.60
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](google/dagger@dagger-2.59.2...dagger-2.60)

Updates `io.ktor:ktor-server-core-jvm` from 3.5.0 to 3.5.1
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](ktorio/ktor@3.5.0...3.5.1)

Updates `io.ktor:ktor-server-netty-jvm` from 3.5.0 to 3.5.1
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](ktorio/ktor@3.5.0...3.5.1)

Updates `io.ktor:ktor-server-cio-jvm` from 3.5.0 to 3.5.1
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](ktorio/ktor@3.5.0...3.5.1)

Updates `io.ktor:ktor-server-netty-jvm` from 3.5.0 to 3.5.1
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](ktorio/ktor@3.5.0...3.5.1)

Updates `io.ktor:ktor-server-cio-jvm` from 3.5.0 to 3.5.1
- [Release notes](https://github.com/ktorio/ktor/releases)
- [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md)
- [Commits](ktorio/ktor@3.5.0...3.5.1)

Updates `com.google.dagger.hilt.android` from 2.59.2 to 2.60
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](google/dagger@dagger-2.59.2...dagger-2.60)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.google.dagger:hilt-android
  dependency-version: '2.60'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: com.google.dagger:hilt-android-compiler
  dependency-version: '2.60'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: com.google.dagger:hilt-android-compiler
  dependency-version: '2.60'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: io.ktor:ktor-server-core-jvm
  dependency-version: 3.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: io.ktor:ktor-server-netty-jvm
  dependency-version: 3.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: io.ktor:ktor-server-cio-jvm
  dependency-version: 3.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: io.ktor:ktor-server-netty-jvm
  dependency-version: 3.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: io.ktor:ktor-server-cio-jvm
  dependency-version: 3.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.google.dagger.hilt.android
  dependency-version: '2.60'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
…path

- Merge migrateTabOrder, ensureLibrarySortDefaults, and legacy favorite
  migration into a single deferred coroutine (2s delay)
- Defer loadPersistedDailyMix and loadSearchHistory to after first
  frame (1.5s delay)
- This prevents DataStore first() calls and DB queries from blocking
  the critical init path that feeds first-frame rendering
…storage

- Load songs first (most critical tab, needed for Songs tab rendering)
- Chain albums after songs, artists after albums, folders after artists
  using Job.join() to prevent 4 simultaneous Room queries from competing
  for limited I/O bandwidth on eMMC storage (Redmi)
- Reduces GC pressure from concurrent heap allocations
…om queries

- Replace songCountFlow (Room query) with allSongsFlow (in-memory)
- Now all 3 flows in the combine are in-memory StateFlows, not Room queries
- Eliminates redundant SELECT COUNT(*) query that re-emitted on every
  songs table write during sync
- Remove individual _isLoadingCategories toggles from albums and artists
  jobs (they no longer manage their own loading state)
- Add a single watcher coroutine that sets _isLoadingCategories = true
  when songs complete, then false when all sequential jobs finish
- Prevents 3 redundant recompositions of LibraryScreen through
  playerUiState during initial data load
- Library folders/loading combine: skip update when Triple unchanged
- Sort options combine: skip update when SortOptionsSnapshot unchanged
- AiUiSnapshot combine: skip update when snapshot unchanged
- Prevents cascading recompositions of LibraryScreen from redundant
  playerUiState emissions during multiple rapid state changes
…quests

- Add LYRICS to AiSystemPromptType enum
- Add LYRICS case to AiSystemPromptEngine.buildPrompt with role/strategy
- Update translateLyrics in AiStateHolder to use AiSystemPromptType.LYRICS
- Add 'Lyrics' display label to formatPromptType in AiUsageComponents
- Lyrics translation requests now appear distinctly in AI activity logs
… Parameters tab

- Add GENERATION_PARAMETERS category to SettingsCategory enum with Tune icon
- AI Integration tab now keeps only: provider selection, API key entry,
  model selection, base URL, and activity logs
- New Generation Parameters tab gets: system prompt editor, temperature,
  top P, top K, max tokens, presence/frequency penalty, sample size,
  digest mode, and extended song fields
- Add English string resources for the new category
…earch

- Add description field to AiProvider enum entries
- Create SearchableProviderSelector composable similar to
  SearchableModelSelector with search, filtering, and count label
- Replace ThemeSelectorItem in AI_INTEGRATION settings with
  SearchableProviderSelector for provider selection
- Search covers name, displayName, and description fields
- Update AI subtitle to reflect model selection and activity logs
- Add GENERATION_PARAMETERS category strings to all locales
- All new strings use English as fallback pending translator contributions
… method

- Remove dead hasGeminiApiKey StateFlow in PlayerViewModel
- Remove dead songCountFlow StateFlow in PlayerViewModel
- Remove unused getSongCountFlow() from MusicRepository interface and impl
- Remove corresponding mock from PlayerViewModelTest
@daedaevibin

Copy link
Copy Markdown
Contributor Author

@theovilardo
@VoidX3D

PR Updated, check main description message. (Will be working to close issues i have opened on my fork to cover additional items, you may check as required.)

@daedaevibin
daedaevibin marked this pull request as ready for review July 5, 2026 21:36
@VoidX3D

VoidX3D commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Yes everything looks fine. I'll do some testing after I have time .

daedaevibin and others added 7 commits July 6, 2026 04:17
…og stuck, non-Latin search

- Increase lyrics translation token cap from 16384 to 32768
- Use 3x output estimation (original+translation per line)
- Expand CJK detection to include Thai, Arabic, Greek, Hebrew, Hindi, Punjabi
- Remove false 'already translated' guard that checked stale UI state
- Reorder lyrics source priority: local file > embedded > DB > song.lyrics
- Close lyrics search dialog on Success (sync searchUiState with dialog visibility)
- Add romanized artist search strategies for non-Latin scripts
- Improve translation prompt to handle both synced and plain (unsynced) lyrics
- Fix fetchFromRemote missing return@withContext for exact-match
- Fix bulk LRC scanner to use Unicode-aware regex
- Fix thinking model detection false positives
- Add AI response cache cleanup (7-day TTL)
- Consolidate duplicate model filtering (UnifiedModelFilter)
- Move Gemini API key from URL query param to HTTP header
- Remove dead code (countTokens, duplicate clearAll, FQN imports)
…duplication

#58: Shared OkHttpClient singleton for AI clients
- Added @AiOkHttpClient qualifier in Qualifiers.kt
- Provided shared OkHttpClient in AppModule.kt with 30s/60s/30s timeouts
- Injected into AiClientFactory and passed to GeminiAiClient/GenericOpenAiClient
- Removed per-client OkHttpClient creation from GeminiAiClient and GenericOpenAiClient
- Connection pool is now reused across all AI client instances

#64: Fix high-res FLAC metadata write skipping
- Changed updateFileMetadataWithTagLib to return false for problematic FLAC
  instead of true (was silently succeeding without writing)
- Added FLAC verification after JAudioTagger commit to detect failed writes
- Falls back to TagLib if JAudioTagger fails on FLAC files

#67: Extract hardcoded provider labels, deduplicate sections
- AiClientFactory now uses provider.displayName instead of hardcoded strings
- Removed 80+ lines of dead per-provider StateFlows from SettingsViewModel
- Removed dead per-provider system prompt change/reset functions
- Removed dead per-provider model change functions
…ode quality improvements

- Fix LyricsRepositoryImpl: Song.id.toLong() → toLongOrNull() with guards
  for non-numeric IDs (Telegram, Netease, GDrive sources)
- Fix return type mismatch in scanAndAssignLocalLrcFiles
- Remove dead favorites operations from MusicDao and UserPreferencesRepository
  (favorites now managed via FavoritesDao with SQL triggers)
- Extract duplicated AiUsageReportSection composable in SettingsCategoryScreen
- Hoist 9 inline collectAsStateWithLifecycle calls in Generation Parameters
- SearchScreen: derive selectedSongIds/selectedPlaylistIds from remembered sets
  instead of separate Flow collections; pass isShuffleEnabled as param
- SongEntity: toLongOrNull() with explicit exception for invalid IDs
- SongRemovalStateHolder: guard non-numeric Song.id on delete
Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
…th 3 updates

Bumps the gradle-dependencies group with 3 updates in the / directory: [com.google.dagger:hilt-android](https://github.com/google/dagger), [com.google.dagger:hilt-android-compiler](https://github.com/google/dagger) and [com.google.dagger.hilt.android](https://github.com/google/dagger).


Updates `com.google.dagger:hilt-android` from 2.60 to 2.60.1
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](google/dagger@dagger-2.60...dagger-2.60.1)

Updates `com.google.dagger:hilt-android-compiler` from 2.60 to 2.60.1
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](google/dagger@dagger-2.60...dagger-2.60.1)

Updates `com.google.dagger:hilt-android-compiler` from 2.60 to 2.60.1
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](google/dagger@dagger-2.60...dagger-2.60.1)

Updates `com.google.dagger.hilt.android` from 2.60 to 2.60.1
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](google/dagger@dagger-2.60...dagger-2.60.1)

---
updated-dependencies:
- dependency-name: com.google.dagger.hilt.android
  dependency-version: 2.60.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.google.dagger:hilt-android
  dependency-version: 2.60.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.google.dagger:hilt-android-compiler
  dependency-version: 2.60.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.google.dagger:hilt-android-compiler
  dependency-version: 2.60.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@daedaevibin

Copy link
Copy Markdown
Contributor Author

@VoidX3D

Sorry, forgot to respond. I made many adjustments and changes since then so if you've not yet, you should try checking that out.

…dependencies-3086ed5dc2

chore(deps): bump the gradle-dependencies group across 1 directory with 3 updates
…/github-actions-640176b5ab

chore(deps): bump actions/checkout from 6 to 7 in the github-actions group
@daedaevibin

Copy link
Copy Markdown
Contributor Author

dependabot Bot and others added 10 commits July 14, 2026 22:43
…th 17 updates

Bumps the gradle-dependencies group with 17 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [org.jetbrains.kotlin:kotlin-metadata-jvm](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.10` |
| [org.junit.platform:junit-platform-launcher](https://github.com/junit-team/junit-framework) | `6.1.1` | `6.1.2` |
| [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit-framework) | `6.1.1` | `6.1.2` |
| [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit-framework) | `6.1.1` | `6.1.2` |
| [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework) | `6.1.1` | `6.1.2` |
| [com.google.genai:google-genai](https://github.com/googleapis/java-genai) | `1.60.0` | `1.61.0` |
| [org.junit.jupiter:junit-jupiter-params](https://github.com/junit-team/junit-framework) | `6.1.1` | `6.1.2` |
| [org.jetbrains.kotlin:kotlin-test-junit](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.10` |
| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.10` |
| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.10` |
| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.10` |
| [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java) | `1.84` | `1.85` |
| [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) | `1.84` | `1.85` |
| com.android.application | `9.2.1` | `9.3.0` |
| com.android.test | `9.2.1` | `9.3.0` |
| com.android.library | `9.2.1` | `9.3.0` |
| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.3.9` | `2.3.10` |



Updates `org.jetbrains.kotlin:kotlin-metadata-jvm` from 2.4.0 to 2.4.10
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.4.0...v2.4.10)

Updates `org.junit.platform:junit-platform-launcher` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.jupiter:junit-jupiter-api` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.jupiter:junit-jupiter-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.vintage:junit-vintage-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `com.google.genai:google-genai` from 1.60.0 to 1.61.0
- [Release notes](https://github.com/googleapis/java-genai/releases)
- [Changelog](https://github.com/googleapis/java-genai/blob/main/CHANGELOG.md)
- [Commits](googleapis/java-genai@v1.60.0...v1.61.0)

Updates `org.junit.jupiter:junit-jupiter-params` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.jetbrains.kotlin:kotlin-test-junit` from 2.4.0 to 2.4.10
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.4.0...v2.4.10)

Updates `org.jetbrains.kotlin.android` from 2.4.0 to 2.4.10
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.4.0...v2.4.10)

Updates `org.jetbrains.kotlin.plugin.compose` from 2.4.0 to 2.4.10
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.4.0...v2.4.10)

Updates `org.jetbrains.kotlin.plugin.serialization` from 2.4.0 to 2.4.10
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.4.0...v2.4.10)

Updates `org.junit.jupiter:junit-jupiter-api` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.jupiter:junit-jupiter-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.vintage:junit-vintage-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.bouncycastle:bcprov-jdk18on` from 1.84 to 1.85
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

Updates `org.bouncycastle:bcpkix-jdk18on` from 1.84 to 1.85
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

Updates `org.bouncycastle:bcpkix-jdk18on` from 1.84 to 1.85
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

Updates `com.android.application` from 9.2.1 to 9.3.0

Updates `com.android.test` from 9.2.1 to 9.3.0

Updates `com.android.library` from 9.2.1 to 9.3.0

Updates `org.jetbrains.kotlin.android` from 2.4.0 to 2.4.10
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.4.0...v2.4.10)

Updates `org.jetbrains.kotlin.plugin.compose` from 2.4.0 to 2.4.10
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.4.0...v2.4.10)

Updates `com.google.devtools.ksp` from 2.3.9 to 2.3.10
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](google/ksp@2.3.9...2.3.10)

Updates `com.android.test` from 9.2.1 to 9.3.0

Updates `com.android.library` from 9.2.1 to 9.3.0

Updates `org.jetbrains.kotlin.plugin.serialization` from 2.4.0 to 2.4.10
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.4.0...v2.4.10)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-metadata-jvm
  dependency-version: 2.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.junit.platform:junit-platform-launcher
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.junit.jupiter:junit-jupiter-api
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.junit.vintage:junit-vintage-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.google.genai:google-genai
  dependency-version: 1.61.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: org.junit.jupiter:junit-jupiter-params
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.jetbrains.kotlin:kotlin-test-junit
  dependency-version: 2.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.jetbrains.kotlin.android
  dependency-version: 2.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.jetbrains.kotlin.plugin.compose
  dependency-version: 2.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.jetbrains.kotlin.plugin.serialization
  dependency-version: 2.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.junit.jupiter:junit-jupiter-api
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.junit.vintage:junit-vintage-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.bouncycastle:bcprov-jdk18on
  dependency-version: '1.85'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: org.bouncycastle:bcpkix-jdk18on
  dependency-version: '1.85'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: org.bouncycastle:bcpkix-jdk18on
  dependency-version: '1.85'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: com.android.application
  dependency-version: 9.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: com.android.test
  dependency-version: 9.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: com.android.library
  dependency-version: 9.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: org.jetbrains.kotlin.android
  dependency-version: 2.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: org.jetbrains.kotlin.plugin.compose
  dependency-version: 2.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.google.devtools.ksp
  dependency-version: 2.3.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.android.test
  dependency-version: 9.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: com.android.library
  dependency-version: 9.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: org.jetbrains.kotlin.plugin.serialization
  dependency-version: 2.4.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
…60974e

Signed-off-by: Dае Еuнша <daedaevibin@ik.me>
…dependencies-5a7a60974e

chore(deps): bump the gradle-dependencies group across 1 directory with 17 updates
Bumps the gradle-dependencies group with 1 update in the / directory: androidx.compose.material3:material3.


Updates `androidx.compose.material3:material3` from 1.5.0-alpha23 to 1.5.0-alpha24

---
updated-dependencies:
- dependency-name: androidx.compose.material3:material3
  dependency-version: 1.5.0-alpha24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
…dependencies-ae5cc6b71d

chore(deps): bump androidx.compose.material3:material3 from 1.5.0-alpha23 to 1.5.0-alpha24 in the gradle-dependencies group across 1 directory
Bumps the gradle-dependencies group with 4 updates: [com.mikepenz:aboutlibraries-core](https://github.com/mikepenz/AboutLibraries), [com.mikepenz:aboutlibraries-compose-m3](https://github.com/mikepenz/AboutLibraries), com.mikepenz.aboutlibraries.plugin.android and [com.google.genai:google-genai](https://github.com/googleapis/java-genai).


Updates `com.mikepenz:aboutlibraries-core` from 15.0.3 to 15.0.4
- [Release notes](https://github.com/mikepenz/AboutLibraries/releases)
- [Commits](mikepenz/AboutLibraries@15.0.3...15.0.4)

Updates `com.mikepenz:aboutlibraries-compose-m3` from 15.0.3 to 15.0.4
- [Release notes](https://github.com/mikepenz/AboutLibraries/releases)
- [Commits](mikepenz/AboutLibraries@15.0.3...15.0.4)

Updates `com.mikepenz.aboutlibraries.plugin.android` from 15.0.3 to 15.0.4

Updates `com.mikepenz:aboutlibraries-compose-m3` from 15.0.3 to 15.0.4
- [Release notes](https://github.com/mikepenz/AboutLibraries/releases)
- [Commits](mikepenz/AboutLibraries@15.0.3...15.0.4)

Updates `com.google.genai:google-genai` from 1.61.0 to 1.62.0
- [Release notes](https://github.com/googleapis/java-genai/releases)
- [Changelog](https://github.com/googleapis/java-genai/blob/main/CHANGELOG.md)
- [Commits](googleapis/java-genai@v1.61.0...v1.62.0)

Updates `com.mikepenz.aboutlibraries.plugin.android` from 15.0.3 to 15.0.4

---
updated-dependencies:
- dependency-name: com.mikepenz:aboutlibraries-core
  dependency-version: 15.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.mikepenz:aboutlibraries-compose-m3
  dependency-version: 15.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.mikepenz.aboutlibraries.plugin.android
  dependency-version: 15.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.mikepenz:aboutlibraries-compose-m3
  dependency-version: 15.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
- dependency-name: com.google.genai:google-genai
  dependency-version: 1.62.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gradle-dependencies
- dependency-name: com.mikepenz.aboutlibraries.plugin.android
  dependency-version: 15.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: gradle-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
…dependencies-591b51ae27

bump the gradle-dependencies group with 4 updates
@daedaevibin daedaevibin changed the title This PR adds multi-language romanization support, new app languages, a dedicated Lyrics settings section, fixes 21 pre-existing lint errors, and includes various improvements across the codebase. 🌍 i18n (JA/VI/ZH-TW) + Romanization + AI Overhaul + Performance + Lint Fixes Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants